package com.github.prontera.model.request;

import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotBlank;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.prontera.domain.enums.GenderEnum;
import com.github.prontera.domain.enums.RegisterChannelEnum;

import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.ToString;

@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler", "fieldHandler" }, ignoreUnknown = true)
public class UserRegisterRequest extends RestfulRequest {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@NotNull
	@NotBlank
	@JsonProperty("mobile")
	@ApiModelProperty(value = "手机号", example = "12345678911", required = true)
	private String mobile; 
	@NotNull
	@NotBlank
	@JsonProperty("headImage")
	@ApiModelProperty(value = "头像", example = "http://www.abc.com/user.jpg", required = true)
	private String headImage; 
	@NotNull
	@NotBlank
	@JsonProperty("nickname")
	@ApiModelProperty(value = "第三方注册获取的用户名", example = "18888888888", required = true)
	private String nickname; 
	@NotNull
	@NotBlank
	private RegisterChannelEnum registerChannel;
	@NotNull
	@NotBlank
	private GenderEnum gender;
	@NotNull
	@NotBlank
	@JsonProperty("code")
	@ApiModelProperty(value = "第三方登录的openid", example = "18888888888", required = true)
	private String code;
	
	@NotNull
	@NotBlank
	@JsonProperty("verifCode")
	@ApiModelProperty(value = "验证码", example = "1234", required = true)
	private String verifCode;
	@JsonProperty("password")
	@ApiModelProperty(value = "密码", example = "密码", required = true)
	private String password; 
	@JsonProperty("shareCode")
	@ApiModelProperty(value = "邀请码", example = "邀请码", required = true)
	private String shareCode; 
	/**
	 * jpush交换标识
	 */
	private String jpushCode;
	 
	public void setShareCode(String shareCode) {
		this.shareCode = shareCode;
	}
	public String getShareCode() {
		return shareCode;
	}
	public GenderEnum getGender() {
		return gender;
	}
	public void setGender(GenderEnum gender) {
		this.gender = gender;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getVerifCode() {
		return verifCode;
	}
	public void setVerifCode(String verifCode) {
		this.verifCode = verifCode;
	}
	public String getHeadImage() {
		return headImage;
	}
	public void setHeadImage(String headImage) {
		this.headImage = headImage;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public RegisterChannelEnum getRegisterChannel() {
		return registerChannel;
	}
	public void setRegisterChannel(RegisterChannelEnum registerChannel) {
		this.registerChannel = registerChannel;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	public String getJpushCode() {
		return jpushCode;
	}
	public void setJpushCode(String jpushCode) {
		this.jpushCode = jpushCode;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
}
